﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Elysium.Demo;
using Elysium.Demo.Ventas;
using SIIE_ERP.BaseDatos.Configuracion.Empresa.PagoLicencias;
using System.Data;
using SIIE_ERP.Codigo;

namespace Elysium.Demo.Configuracion
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class Timbres : UserControl
    {
        private UsuarioActivo _sesion;

        public Timbres(ref UsuarioActivo usuario)
        {
            InitializeComponent();
            this._sesion = usuario;

            CargarDatos();
        }

        public void CargarDatos()
        {
            if (WebServicesClass.CheckConnection())
            {
                TimbresGratuitos.Content = WebServicesClass.GetNumeroTimbresGratis(_sesion.RFC).ToString();
                TimbresPago.Content = WebServicesClass.GetNumeroTimbresPago(_sesion.RFC).ToString();
            }
            else
            {
                TimbresGratuitos.Visibility = System.Windows.Visibility.Hidden;
                TimbresPago.Visibility = System.Windows.Visibility.Hidden;
                TimbresGratuitosLabel.Visibility = System.Windows.Visibility.Hidden;
                TimbresPagoLabel.Visibility = System.Windows.Visibility.Hidden;
            }
        }

        private void ButtonInformacion_Click_1(object sender, RoutedEventArgs e)
        {
            WindowAyuda Ayuda = new Elysium.Demo.WindowAyuda("Timbres.htm", "Ayuda");
            Ayuda.Owner = SIIE_ERP.View.NavegacionUI.GetParentWindow(this); Ayuda.ShowDialog();
        }

        private void Button_Comprar_Click_1(object sender, RoutedEventArgs e)
        {
            double CostoTotal = 0;
            int Timbres = 0;

            if((bool)RadioButton1.IsChecked)
            {
                CostoTotal = 250;
                Timbres = 100;
            }
            else if ((bool)RadioButton2.IsChecked)
            {
                CostoTotal = 450;
                Timbres = 300;
            }
            else if ((bool)RadioButton3.IsChecked)
            {
                CostoTotal = 550;
                Timbres = 500;
            }
            else if ((bool)RadioButton4.IsChecked)
            {
                CostoTotal = 1000;
                Timbres = 1000;
            }
            
            System.Windows.Forms.DialogResult dialogResult =
                                System.Windows.Forms.MessageBox.Show(
                                    "Se le cobrarán " + CostoTotal.ToString("C") + " por los CFDi's a adquirir",
                                    "Pago CFDi's",
                                    System.Windows.Forms.MessageBoxButtons.YesNo
                                );
            if (dialogResult == System.Windows.Forms.DialogResult.Yes)
            {
                if (!WebServicesClass.CheckConnection())
                {
                    MessageBox.Show("Se necesita conexión a internet para realizar el pago de las licencias");
                    return;
                }

                dbo_Cat_Empresa_PagoDomiciliado cat_pago = new dbo_Cat_Empresa_PagoDomiciliado(_sesion.RFC, _sesion.UserName);
                DataTable dt_pago = cat_pago.Get_Empresa_PagoDomiciliado_Por_RFC();

                if (dt_pago.Rows.Count == 0)
                {
                    MessageBox.Show("Favor de ingresar sus datos bancarios para poder realizar este cobro en la sección de Pagos Domiciliados");
                    return;
                }

                string Nombre = dt_pago.Rows[0]["Nombre"].ToString();
                string Apellidos = dt_pago.Rows[0]["Apellidos"].ToString();
                string Numero_Tarjeta = dt_pago.Rows[0]["Numero_Tarjeta"].ToString();
                string CP = dt_pago.Rows[0]["CP"].ToString();
                string CodigoSeguridad = dt_pago.Rows[0]["CodigoSeguridad"].ToString();
                string FechaVenc_mm = dt_pago.Rows[0]["FechaVenc_mm"].ToString();
                string FechaVenc_aa = dt_pago.Rows[0]["FechaVenc_aa"].ToString();
                string Telefono = dt_pago.Rows[0]["Telefono"].ToString();
                string Celular = dt_pago.Rows[0]["Celular"].ToString();
                string Dir_Calle = dt_pago.Rows[0]["Dir_Calle"].ToString();
                string Dir_Colonia = dt_pago.Rows[0]["Dir_Colonia"].ToString();
                string Dir_CiudadPueblo = dt_pago.Rows[0]["Dir_CiudadPueblo"].ToString();
                string Desc_Estado = dt_pago.Rows[0]["Desc_Estado"].ToString();
                string Desc_Pais = dt_pago.Rows[0]["Desc_Pais"].ToString();

                if (
                    String.IsNullOrEmpty(Nombre) ||
                    String.IsNullOrEmpty(Apellidos) ||
                    String.IsNullOrEmpty(Numero_Tarjeta) ||
                    String.IsNullOrEmpty(CP) ||
                    String.IsNullOrEmpty(CodigoSeguridad) ||
                    String.IsNullOrEmpty(FechaVenc_mm) ||
                    String.IsNullOrEmpty(FechaVenc_aa) ||
                    String.IsNullOrEmpty(Telefono) ||
                    String.IsNullOrEmpty(Celular) ||
                    String.IsNullOrEmpty(Dir_Calle) ||
                    String.IsNullOrEmpty(Dir_Colonia) ||
                    String.IsNullOrEmpty(Dir_CiudadPueblo) ||
                    String.IsNullOrEmpty(Desc_Estado) ||
                    String.IsNullOrEmpty(Desc_Pais)
                )
                {
                    MessageBox.Show("Los datos bancarios que ha ingresado están incompletos, favor de verificar.");
                    return;
                }

                if (WebServicesClass.CreateAndSavePay_PagoFacil
                (
                    CostoTotal,
                    _sesion.RFC,
                    Nombre,
                    Apellidos,
                    Numero_Tarjeta,
                    CodigoSeguridad,
                    CP,
                    FechaVenc_mm,
                    FechaVenc_aa,
                    Telefono,
                    Celular,
                    Dir_Calle,
                    Dir_Colonia,
                    Dir_CiudadPueblo,
                    Desc_Estado,
                    Desc_Pais,
                    "Pago de Ajuste de Usuario"
                ))
                {
                    MessageBox.Show("Se ha realizado el pago exitosamente. Podrá ver los cambios la próxima vez que inicie sesión.");
                }
                else
                {
                    MessageBox.Show("No se ha podido realizar el pago ya que sus datos bancarios son incorrectos, favor de verificar.");
                    return;
                }
            }
            else
            {
                System.Windows.MessageBox.Show("Se ha cancelado la compra de licencia de este usuario");
                return;
            }

            //Servicio para añadir los timbres
            if (WebServicesClass.AnadirTimbres(_sesion.RFC, Timbres))
            {
                MessageBox.Show("Se han añadido los timbres correctamente");
                CargarDatos();
            }
            else
            {
                MessageBox.Show("Error al añadir los timbres");                
            }
        }
    }
}
